#pragma once
#include <game/Config.h>

#include <memory>
#include <vector>
#include <boost/shared_ptr.hpp>
#include <boost/scoped_ptr.hpp>

namespace liba {
namespace xml {
class ObjectANSI; 
} // namespace xml
namespace lib3d {
namespace node {
class Node;
} // namespace node
} // namespace lib3d
} // namespace liba

ARELLO_GAME_NAMESPACE_DECL_START
namespace controls {

class Control;
class ControlFactory;

class ControlCollectionLoader
{
public:
	ControlCollectionLoader();
	~ControlCollectionLoader();

	liba::xml::ObjectANSI* GetLoader();
	void SetRootNode(liba::lib3d::node::Node* root);
	void SetControlFactory(const ControlFactory* value);

	const std::vector<boost::shared_ptr<Control> >& GetLoadedControls();
private:
	boost::scoped_ptr<struct ControlCollectionLoaderPrivates> privates;
};

} // namespace controls
ARELLO_GAME_NAMESPACE_DECL_END